#-*- coding:utf-8 -*-
import time
from wsgiref.simple_server import make_server
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

class ResponseTimeMiddleware(object):
    # 记录请求耗时时间
    def __init__(self,app):
        self.app = app

    def __call__(self,environ,start_response):
        start_time = time.time() 
        response = self.app(environ,start_response)
        response_time = (time.time() - start_time)
        timing_text = "记录请求耗时中间件输出\n\n本次请求耗时:{:.10f}ms \n\n\n".format(response_time)
        response.append(timing_text.encode('utf-8'))
        return response
    
def simple_app(environ, start_response):
    status ='200 0K' # 响应的状态码

    # 设置响应的头部信息，包括内容类型为 text/plain 格式，字符集为 utf-8
    response_headers =[('Content-type', 'text/plain;charset=utf-8')]

    # 调用 start_response 函数，将响应状态码和头部信息传递给服务器
    start_response(status, response_headers)

    # 创建一个空列表 return_body，用于存储响应的主体内容
    return_body = [] # [] 是列表，{} 是字典

    # 遍历 environ 字典中的每个键值对
    for key,value in environ.items():
        # 将键和值以格式化的字符串形式添加到 return_body 列表中
        return_body.append("{} : {}".format(key,value))

    return_body.append('\nHello WSGI')
    # 使用 join 方法将 return_body 列表中的所有元素连接成一个字符串，并在每个元素之间添加换行符
    return ["\n".join(return_body).encode('utf-8')]

app = ResponseTimeMiddleware(simple_app) # 创建一个中间件的实例
httpd = make_server('192.168.1.109',8080,app) # 创建一个web服务器
httpd.serve_forever() # 启动服务器，并使其一直运行